#!/user/bin/env python3
# -*- coding: utf-8 -*-
""""
    1.base基类：page页面的一些公共方法：
        Base类
            初始化方法
            查找元素的方法
            点击元素方法
            输入方法
            获取文本方法
            截图方法
            注意：
                1，以上方法封装，解包只需要要一次，在查找元素解包
                2.driver为虚拟，谁调用，谁传入，无需关注从哪里来
                3.loc真正使用loc的方法只有查找元素方法使用
"""
from datetime import datetime
import time
import webbrowser

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By


class Base:
    # 初始化
    def __init__(self):
        """"临时替代driver"""
        self.driver = webdriver.Edge()
        self.driver.maximize_window()
        self.driver.get("https://www.baidu.com/")

    # 查找元素方法(提供点击，输入，获取文本)的使用
    def base_find_element(self, loc, timeout=30, poll=0.1):
        return WebDriverWait(self.driver,
                             timeout=timeout,
                             poll_frequency=poll).until(lambda x: x.find_element(*loc))

    """"
    # 元组解包的方法,法1：变量前加*，*loc; 法2:把元组的括号去掉
    loc = (By.CSS_SELECTOR, ".TEST")
    # loc = By.CSS_SELECTOR, ".TEST"
    print(type(loc), *loc)
    """

    # 点击方法
    def base_click(self, loc):
        self.base_find_element(loc).click()

    # 输入方法
    def base_input(self, loc, value):
        ele = self.base_find_element(loc)
        ele.clear()
        ele.send_keys(value)

    # 获取错误文本方法
    def base_get_text(self, loc):
        return self.base_find_element(loc).text

    # 截图方法
    def base_get_image(self):
        self.driver.get_screenshot_as_file(f"./image.png")
